home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 2005 March / Macworld CD March 2005 - Marathon Trilogy.iso / Shareware World / Text Processing / HexEdit Release.sit / HexEdit Release / Project / Source / HexEdit.h < prev    next >
Encoding:
C/C++ Source or Header  |  2004-10-30  |  8.3 KB  |  285 lines  |  [TEXT/CWIE]

  1. /*
  2.  * The contents of this file are subject to the Mozilla Public
  3.  * License Version 1.1 (the "License"); you may not use this file
  4.  * except in compliance with the License. You may obtain a copy of
  5.  * the License at http://www.mozilla.org/MPL/
  6.  * 
  7.  * Software distributed under the License is distributed on an "AS
  8.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  9.  * implied. See the License for the specific language governing
  10.  * rights and limitations under the License.
  11.  * 
  12.  * The Original Code is Copyright 1993 Jim Bumgardner.
  13.  * 
  14.  * The Initial Developer of the Original Code is Jim Bumgardner
  15.  * Portions created by Lane Roathe (LR) are
  16.  * Copyright (C) Copyright © 1996-2002.
  17.  * All Rights Reserved.
  18.  *
  19.  * Modified: $Date: 2002/11/01 21:58:01 $
  20.  * Revision: $Id: HexEdit.h,v 1.29 2002/11/01 21:58:01 raving Exp $
  21.  *
  22.  * Contributor(s):
  23.  *        Lane Roathe
  24.  *        Nick Shanks (NS)
  25.  *        Scott E. Lasley (SEL) 
  26.  *        Brian Bergstrand (BB)
  27.  */
  28.  
  29.  
  30. #if TARGET_API_MAC_CARBON && __MWERKS__
  31.     #include <PMApplication.h>
  32. #endif
  33.  
  34. #include <stdarg.h>
  35. #include <string.h>
  36.  
  37. #if TARGET_API_MAC_OS8
  38.     #if PROFILE            // 6/15 Optional profiling support
  39.         #include <Console.h>
  40.         #include <Profile.h>
  41.     #endif
  42. #else
  43.     #ifdef PROFILE
  44.         #undef PROFILE
  45.     #endif
  46.     
  47.     #ifndef __MWERKS__
  48.         #include <Carbon/Carbon.h>
  49.     #endif
  50. #endif
  51.  
  52. #if !defined(__MC68K__) && defined(__MWERKS__)
  53.     #include <InternetConfig.h>
  54. #endif
  55.  
  56. #ifndef _HexEdit_
  57. #define _HexEdit_
  58.  
  59. // Comatibility macros
  60. //LR -- 1.72 :no longer requires carbon headers to compile for non-carbon targets
  61. #if !TARGET_API_MAC_CARBON
  62.     #if !defined(SetPortDialogPort)
  63.         #define SetPortDialogPort SetPort
  64.     #endif
  65.     #if !defined(GetDialogPort)
  66.         #define GetDialogPort( d ) d     // BB: added (LR -- may already be defined, check!)
  67.     #endif
  68.     #if !defined(GetWindowPortBounds)    //LR 180 -- already defined!
  69.         #define GetWindowPortBounds(w,rp) *rp = (w)->portRect
  70.     #endif
  71.     #define GetWindowBounds(w,t,rp) *rp = (*((CWindowPeek)w)->port.portPixMap)->bounds
  72.     #define GetPortBounds(p,rp) *rp = (p)->portRect
  73.     #define GetPortPixMap(p) p->portPixMap
  74.     #define GetPortHiliteColor(p,c) *(c) = (*((GVarHandle)p->grafVars))->rgbHiliteColor    //LR 185
  75.     #define InvalWindowRect(w,r) InvalRect(r)
  76.     #define EnableMenuItem EnableItem
  77.     #define DisableMenuItem DisableItem
  78.     #define FrontNonFloatingWindow FrontWindow
  79.     #define MenuRef MenuHandle
  80.     #if !defined(GetDialogFromWindow)
  81.         #define GetDialogFromWindow
  82.     #endif
  83. #endif
  84.  
  85. // make some things a bit easier to read
  86.  
  87. #define kAppCreator        FOUR_CHAR_CODE('hDmp')
  88. #define kDefaultFileType FOUR_CHAR_CODE('TEXT')
  89.  
  90. //LR 185 -- under Carbon, alloc more RAM for faster ops
  91. #if TARGET_API_MAC_CARBON
  92.     #define kChunkSize        (128L * 1024L)        //LR 185 -new-
  93.     #define kMaxFileRAM        (kChunkSize * 8)    //LR 185 32000L
  94. #else
  95.     #define kChunkSize        (32L * 1024L)        //LR 185 33000L
  96.     #define kMaxFileRAM        (kChunkSize * 4)    //LR 185330000L
  97. //    #define kSlushRAM        1000L
  98. #endif
  99.  
  100. #define kAllocIncrement    64L
  101.  
  102. #define kSBarSize        16
  103. #define    kGrowIconSize    14
  104.  
  105. #define kBytesPerLine    16
  106.  
  107. #define kHeaderHeight    16
  108. #define kFooterHeight    16
  109. //LR: 1.7 #define TopMargin        3
  110. //LR: 1.7 #define BotMargin        0
  111. //LR: 1.7 #define AsciiSpacing    6
  112. //LR: 1.7 #define DescendHeight    0
  113.  
  114. #define kStringHexPos    12
  115. #define kStringTextPos    (kStringHexPos+(kBytesPerLine*3)+1)
  116. #define kBodyStrLen        (kStringTextPos+kBytesPerLine-kStringHexPos)    // LR: 1.7 was 75 - (kStringHexPos -  2) in EditWindow.c
  117.  
  118. //LR 1.72 from resource #define kFontFace        "\pMonaco"
  119. //#define kFontSize        9
  120. #define kLineHeight        (g.lineHeight)    //11    //%% make flexible (and char width?)
  121. #define kCharWidth        (g.charWidth)    //6
  122. #define kHexWidth        (kCharWidth*3)
  123.  
  124. #define kBodyDrawPos    0    // LR: 12 - let's not have any undrawn areas, to avoid erasing!
  125. #define kDataDrawPos    (kBodyDrawPos + ((kStringHexPos - 1) * kCharWidth))
  126. #define kTextDrawPos    (kBodyDrawPos + ((kStringTextPos -  1) * kCharWidth))
  127.  
  128. #define LINENUM(a)        ((a) >> 4)
  129. #define COLUMN(a)        ((a) & 0x0F)
  130. #define CHARPOS(a)        ((a) * kCharWidth)    //1.72 (((a) << 2) + ((a) << 1))    // Multiply by 6
  131. #define HEXPOS(a)        (CHARPOS(a) * 3)    //1.72 ((a) << 4) + ((a) << 1))    // Multiply by 18
  132.  
  133. #define kHexWindowWidth    (((kStringHexPos + kBodyStrLen) * kCharWidth) + kSBarSize)    //LR 1.7 - renamed to show windows are not sizable horizontally! Must be multiple of 2
  134.  
  135. //LR 1.7 #define MaxWindowHeight    512    // Note - these are NOT reversed!
  136.  
  137. // LR: #define PrefResType    'prf1'
  138. // LR: #define PrefResID    128
  139.  
  140. /* NS: now uses Apple defined constants from events.h
  141. #define TAB_KEY            0x09
  142. #define RETURN_KEY        0x0D
  143. #define ENTER_KEY        0x03
  144. #define ESC_KEY            27
  145. */
  146.  
  147. // LR: 1.6.5 -- better ID defs, and include all references
  148. typedef enum { alertSave = 10000, alertError, alertNoFork, alertRevert  }AlertIDs;
  149. typedef enum { dlgSearch = 128, dlgGoto, dlgCompare, dlgComparePref, dlgAbout = 200, dlgGetFile = 1401 } DialogIDs;
  150. typedef enum { strUndo = 128, strPrint, strHeader, strError, strColor, strPrompt, strFiles, strFont, strURLs = 200 } StringIDs;
  151.  
  152. typedef enum { errMemory = 1, errSeek, errRead, errSetFPos, errWrite, errPaste, errFindFolder,
  153.                         errCreate, errOpen, errFileInfo, errPrintRange, errSetFileInfo, errBackup,
  154.                         errRename, errDiskFull, errHexValues, errDefaultPrinter, errGenericPrinting,
  155.                         errSave, errReadOnly
  156.                     } ErrorIDs;
  157.  
  158. typedef enum { CT_Original, CT_Work, CT_Unwritten } ChunkTypes;
  159. typedef enum { FT_Data = 1, FT_Resource } ForkType;
  160. typedef enum { FM_Data = 1, FM_Rsrc, FM_Smart } ForkModes;
  161. typedef enum { HD_Decimal = FT_Resource + 1, HD_Hex, HD_Footer } Headers;
  162. typedef enum { FN_PrefsFolder = 1, FN_PrefsFile, FN_Untitled, FN_DATA, FN_RSRC } Filenames;
  163. typedef enum { AM_Lo, AM_Hi } AsciiModes;
  164. typedef enum { EM_Hex, EM_Decimal, EM_Ascii } EditMode;
  165. typedef enum { EO_Undo = 1, EO_Redo, EO_Typing, EO_Paste, EO_Insert, EO_Overwrite, EO_Cut, EO_Clear, EO_Delete } EditOperation;
  166. typedef enum { ES_Note, ES_Caution, ES_Stop, ES_Fatal } ErrorSeverity;
  167. typedef enum { C_Arrow, C_Watch, C_IBeam } CursorNumbers;
  168. typedef enum { CM_Byte = 1, CM_Word = 2, CM_Long = 4 } CompModeSize;    //LR 185 -- make enums be size!
  169. typedef enum { CM_Different, CM_Match } CompModeType;
  170.  
  171. // preferences Dialog items
  172. typedef enum { CP_Done=1,CP_Cancel,CP_Bytes,CP_Words,CP_Longs,CP_Different,CP_Match,
  173.                                 CP_text1, CP_text2, CP_Case } CompPref;
  174.  
  175. // Color table resources MUST start @ 128 & advance by 1
  176. #define CM_StartingResourceID 128
  177.  
  178. // window ID
  179. #define    kSystem7Window            128        // NS 1.7.1
  180. #define    kAppearanceWindow        129
  181.  
  182. #define kHexEditWindowTag        1000
  183.  
  184. // Mac OS versions
  185. #define kMacOSSevenPointOne         0x00000710
  186. #define kMacOSSevenPointFivePointFive 0x00000755
  187. #define kMacOSEight                0x00000800
  188. #define kMacOSEightPointFive    0x00000850
  189. #define kMacOSEightPointSix        0x00000860
  190. #define kMacOSNine                0x00000900
  191. #define kMacOSNinePointOne        0x00000910
  192. #define kMacOSTen                0x00001000
  193.  
  194. // CarbonLib versions
  195. #define kCarbonLibOnePointOne            0x00000110
  196. #define kCarbonLibOnePointThreePointOne 0x00000131
  197.  
  198. /*** COLOUR TABLE ***/
  199. typedef struct
  200. {
  201.     RGBColor    header;
  202.     RGBColor    headerLine;
  203.     RGBColor    headerText;
  204.  
  205.     RGBColor    bar;
  206.     RGBColor    barLine;
  207.     RGBColor    barText;
  208.  
  209.     RGBColor    body;
  210.     RGBColor    text;
  211.     RGBColor    bodyDark;
  212.     RGBColor    dividerLine;
  213.  
  214. }    HEColorTable_t, *HEColorTablePtr, **HEColorTableHandle;
  215.  
  216. /*** GLOBAL VARIABLES ***/
  217. //LR: 1.66 -- removed undo ptrs
  218. typedef struct
  219. {
  220.     // system info
  221.     Boolean        quitFlag;
  222.     SInt32        systemVersion;        // NS 1.7.1
  223. #if !TARGET_API_MAC_CARBON    // LR: v1.6
  224.     Boolean        WNEImplemented;
  225.     Boolean        sys7Flag;
  226.     Boolean        colorQDFlag;
  227. #endif
  228.     Boolean        dragAvailable;
  229.     Boolean        translucentDrag;
  230.     Boolean        navAvailable;
  231.     Boolean        appearanceAvailable;
  232.     
  233.     // environment gPrefs
  234. //LR 1.72 unused    Boolean        useAppleEvents;
  235.     Boolean        useAppearance;
  236.     Boolean        useNavServices;
  237.     
  238.     // application globals
  239.     Boolean     cursorFlag;
  240.     Rect        cursRect;
  241.     UInt8        forkMode;
  242.     UInt8        highChar;
  243.     SInt8        buffer[512];
  244.     UInt16        maxHeight;
  245.     UInt8        searchBuffer[256];
  246.     UInt8        searchText[256];
  247.     UInt8        replaceText[256];
  248.     UInt8        gotoText[256];
  249.     Boolean        searchDisabled;
  250.     Boolean        replaceDisabled;
  251.     Boolean        replaceAll;
  252.  
  253.     short        fontFaceID;
  254.     short        fontSize;
  255.     short        charWidth;
  256.     short        lineHeight;
  257.  
  258. #ifndef __MC68K__
  259.     ICInstance    icRef;
  260. #endif
  261.  
  262.     // cursors
  263.     CursHandle    watch;
  264.     CursHandle    iBeam;
  265.     
  266.     // dialogs
  267.     DialogPtr    searchDlg;
  268.     DialogPtr    gotoDlg;
  269.  
  270.     // Offscreen drawing surface
  271.     GWorldPtr    offscreen;
  272.  
  273.     // printing
  274. #if TARGET_API_MAC_OS8
  275.     THPrint        HPrint;
  276. #endif
  277. #if TARGET_API_MAC_CARBON    // SEL -- 1.7
  278.     PMPrintSettings    printSettings;
  279.     PMPageFormat    pageFormat;
  280. #endif
  281. }    globals;
  282.  
  283. extern globals g;
  284.  
  285. #endif